/*
 *  ckr_spec_SpecListener.cpp
 *  ckrSpec
 *
 *  Created by C. Keith Ray on 2006.11.08.
 *  Copyright 2006 __MyCompanyName__. All rights reserved.
 *
 */

#include "ckr_spec_SpecListener.h"
#include <iostream>

using namespace std;

namespace  ckr
{

//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SpecListener::SpecListener()
{
}

//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SpecListener::~SpecListener()
{
}

//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

void SpecListener::specStarted( const std::string&  )
{
}

//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

void SpecListener::specEnded( const std::string& , bool  )
{
}

//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

void SpecListener::spec_failed( 
			const std::string&	, 
			int						, 
			const char*				, 
			const std::string&	 )
{
}

//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

RecordingFailuresSpecListener::RecordingFailuresSpecListener()
{
};

//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

RecordingFailuresSpecListener::~RecordingFailuresSpecListener()
{
};

//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

void RecordingFailuresSpecListener::specStarted( const std::string& specName )
{
#pragma unused(specName)
};

//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

void RecordingFailuresSpecListener::spec_failed( 
		const std::string&	nameIn, 
		int						lineNumberIn, 
		const char*				srcFileNameIn, 
		const std::string&	failMessageIn )
{
	log << failMessageIn;

	log << " FAILED in "
			<< nameIn
			<< "; line "
			<< lineNumberIn
			<< "; file "
			<< srcFileNameIn
			<< endl;
}

//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

std::string RecordingFailuresSpecListener::logStr() const
{
	return log.str();
}

//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

StdOutStreamSpecListener::StdOutStreamSpecListener( std::ostream& strm )
	: strmOut( strm )
{
}

//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

StdOutStreamSpecListener::~StdOutStreamSpecListener()
{
}

//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

void StdOutStreamSpecListener::specEnded( const std::string& specName, 
			bool passed )
{
#pragma unused(specName)

	if ( passed )
	{
		strmOut << ".";
	}
	else
	{
		strmOut << "F";
	}
	strmOut.flush();
}

//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

}; // end namespace


